package Admin

import (
	"autoDeploy/service/AdminDocker"
	"github.com/gin-gonic/gin"
	"net/http"
)

type Admin struct{}

func (a Admin) GetContainers(c *gin.Context) {
	//调用service层的方法进行获取数据
	containers, err := AdminDocker.GetDockerStatus()
	if err != nil {
		c.JSON(200, gin.H{"code": 0, "containers": containers, "message": err.Error()})
		return
	}
	c.JSON(200, gin.H{"code": 1, "containers": containers, "message": "查询容器成功"})
	return
}

// RunContainer 运行容器
func (a Admin) RunContainer(c *gin.Context) {
	//解析前端的参数
	var req AdminDocker.UpdateRequest
	// 绑定请求体中的 JSON 数据到结构体
	if err := c.ShouldBindJSON(&req); err != nil {
		// 如果绑定失败，返回 400 Bad Request
		c.JSON(http.StatusBadRequest, gin.H{"code": 0, "message": err.Error()})
		return
	}
	//调用service层方法进行停止容器
	err := AdminDocker.StartDocker(req.ContainerName, req.TeamAddress)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"code": 0, "message": err.Error()})
		return
	}
	c.JSON(http.StatusOK, gin.H{"code": 1, "message": "启动容器成功"})
	return
}

// StopContainer 停止容器
func (a Admin) StopContainer(c *gin.Context) {
	//解析前端的参数
	var req AdminDocker.UpdateRequest
	// 绑定请求体中的 JSON 数据到结构体
	if err := c.ShouldBindJSON(&req); err != nil {
		// 如果绑定失败，返回 400 Bad Request
		c.JSON(http.StatusBadRequest, gin.H{"code": 0, "message": err.Error()})
		return
	}
	//调用service层方法进行停止容器
	err := AdminDocker.StopDocker(req.ContainerName, req.TeamAddress)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"code": 0, "message": err.Error()})
		return
	}
	c.JSON(http.StatusOK, gin.H{"code": 1, "message": "终止容器成功"})
	return
}
